Ledger
2026 · Maintained
Ledger started because I wanted to know where my money went and every app that could tell me also wanted my bank credentials. It is a single binary that reads a plain text file, one transaction per line, and answers questions about it.
2026-07-14 groceries -42.80 co-op
2026-07-15 salary 3200.00 acme
2026-07-16 coffee -3.40 the kiosk
The design constraint
Everything had to survive the program being deleted. The file is the database; the binary is a lens over it. That single decision removed migrations, backups, export, account deletion and roughly ninety percent of the surface area a normal finance app carries — and it meant the first working version took a weekend rather than a season.
What I would change
The query language grew organically and it shows. If I started again I would take SQL seriously from the first day instead of inventing four filters and then a fifth, and I would not have made the reporting subcommand print colour by default — a year of bug reports came from that one line.